﻿
Public Class BLmuestras

    Private beTejido As New BEtejido
    Private beSangre As New BEsangre
    Private beParafina As New BEparafina
    Private beLamina As New BElamina
    Private beMuestras As New BEmuestras
    Private daMuestras As New DAmuestras

    Public Function ListarTipoMuestras() As System.Linq.IQueryable(Of BTTsoft.tipo_muestra)

        Return daMuestras.ListarTipoMuestras()

    End Function

    Public Function ListarOrganos() As System.Linq.IQueryable(Of BTTsoft.organo)

        Return daMuestras.ListarOrganos()

    End Function

    Public Function ListarEstados() As System.Linq.IQueryable(Of BTTsoft.estado_muestra)

        Return daMuestras.ListarEstados()

    End Function

    Public Function BuscarMuestras(ByVal pCodigo As String, ByVal pPaciente As Integer, _
                                   ByVal pMedico As Integer, ByVal pDiagnositco As String, _
                                   ByVal pProtocolo As Integer, ByVal pEdadIni As String, ByVal pEdadFin As String, _
                                   ByVal pSexo As Integer, ByVal pTipMuestra As Integer, ByVal pOrgano As Integer, _
                                   ByVal pFechInicio As Date, ByVal pFechFin As Date, ByVal pFechas As Boolean)
        Dim icodMuestra = 0
        Dim iEdadIni = 0
        Dim iEdadFin = 0
        Dim cSexo As Char
        If pCodigo <> Nothing Then
            Try
                icodMuestra = Integer.Parse(pCodigo)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End If

        If pEdadIni <> Nothing Then
            Try
                iEdadIni = Integer.Parse(pEdadIni)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End If

        If pEdadFin <> Nothing Then
            Try
                iEdadFin = Integer.Parse(pEdadFin)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End If

        If pSexo = 0 Then
            cSexo = ""
        Else
            If pSexo = 1 Then
                cSexo = "M"
            Else
                If pSexo = 2 Then
                    cSexo = "F"
                End If
            End If

        End If

        Return daMuestras.BuscarMuestras(icodMuestra, pPaciente, pMedico, pDiagnositco, pProtocolo, _
                                         iEdadIni, iEdadFin, cSexo, pTipMuestra, pOrgano, pFechInicio, pFechFin, pFechas)
    End Function

    Public Sub buscarMuestraMod(ByVal pCodMuestra As Integer, ByRef pForm As frmMantenimientoMuestra)
        Dim muestra As muestra

        muestra = daMuestras.buscarMuestraMod(pCodMuestra)
        pForm.txtCodigo.Text = muestra.id_muestra.ToString
        pForm.txtPaciente.Text = muestra.paciente.nombre + " " + muestra.paciente.apellido_pat + " " + _
                                 muestra.paciente.apellido_mat
        pForm._codPaciente = muestra.paciente.id_paciente
        pForm.cmbTipMuestra.SelectedValue = muestra.tipo_muestra.id_tipo_muestra
        pForm.cmbOrgano.SelectedValue = muestra.organo.id_organo
        pForm.txtDiagnostico.Text = muestra.diagnostico.diag_general + " " + muestra.diagnostico.diag_especifico
        pForm._codDiagnostico = muestra.diagnostico.id_diagnostico
        pForm.txtMedico.Text = muestra.personal.nombre + " " + muestra.personal.apellido_pat + " " + _
                               muestra.personal.apellido_mat
        pForm._codMedico = muestra.personal.id_personal
        pForm.chkTejNormal.Checked = muestra.tejido_normal
        pForm.chkVih.Checked = muestra.vih
        pForm.txtEdad.Text = muestra.edad
        pForm.cmbEstado.SelectedValue = muestra.estado_muestra.id_estado
        pForm.rtbObservacion.Text = muestra.observaciones
        If (muestra.id_tipomuestra = Constantes.TEJIDO) Then

            pForm.txtDescripcion.Text = muestra.tejido.descripción
            pForm.txtMorfologia.Text = muestra.tejido.morfologia
            pForm.nupPeso.Value = muestra.tejido.peso
            pForm.gpbxTejido.Enabled = True
        Else
            If (muestra.id_tipomuestra = Constantes.SANGRE) Then
                pForm.nupCantidad.Value = muestra.sangre.cantidad
                pForm.gpbxSangreMO.Enabled = True
            Else
                If (muestra.id_tipomuestra = Constantes.PARAFINA) Then
                    pForm.txtTejidoPadre.Text = muestra.parafina.id_tejido.ToString
                    pForm.gpbxParafina.Enabled = True
                Else

                    If (muestra.id_tipomuestra = Constantes.LAMINA) Then
                        pForm.txtParafinaPadre.Text = muestra.lamina.id_parafina.ToString
                        pForm.gpbxLamina.Enabled = True
                    End If
                End If
            End If

        End If

    End Sub

    Public Sub GuardarMuestra(ByVal pCodigo As Integer, ByVal pCodPaciente As Integer, ByVal pTipMuestra As Integer, ByVal pOrgano As Integer, ByVal pCodDiagnostico As Integer, _
                              ByVal pCodmedico As Integer, ByVal pTejidoNormal As Boolean, ByVal pVih As Boolean, ByVal pEdad As Integer, _
                              ByVal pEstado As Integer, ByVal pObservacion As String, ByVal pDescripcion As String, ByVal pPeso As Integer, ByVal pMorfologia As String, _
                              ByVal pCantidad As Integer, ByVal pTejidoP As String, ByVal pParafinaP As String)

        Dim daMuestras As New DAmuestras

        beMuestras._CodMuestra = pCodigo
        beMuestras._codPaciente = pCodPaciente
        beMuestras._codOrgano = pOrgano
        beMuestras._codDiagnostico = pCodDiagnostico
        'falta protocolo
        beMuestras._codPersonal = pCodmedico
        beMuestras._tejidoNormal = pTejidoNormal
        beMuestras._vih = pVih
        beMuestras._edad = pEdad
        beMuestras._codEstado = pEstado
        beMuestras._observaciones = pObservacion
        If pTipMuestra = Constantes.TEJIDO Then

            beTejido._codTejido = beMuestras._CodMuestra
            beTejido._descripcion = pDescripcion
            beTejido._morfologia = pMorfologia
            beTejido._peso = pPeso
            daMuestras.GuardarMuestra(Me.beMuestras, Me.beTejido)
        Else
            If pTipMuestra = Constantes.SANGRE Then

                beSangre._codSangre = beMuestras._CodMuestra
                beSangre._cantidad = pCantidad
                daMuestras.GuardarMuestra(Me.beMuestras, Me.beSangre)
            Else
                If pTipMuestra = Constantes.PARAFINA Then
                    beParafina._codParafina = beMuestras._CodMuestra
                    beParafina._codTejido = pTejidoP
                    daMuestras.GuardarMuestra(Me.beMuestras, Me.beParafina)
                Else
                    If pTipMuestra = Constantes.LAMINA Then
                        beLamina._codLamina = beMuestras._CodMuestra
                        beLamina._codParafina = pParafinaP
                        daMuestras.GuardarMuestra(Me.beMuestras, Me.beLamina)
                    End If
                End If
            End If

        End If



    End Sub


End Class
